#include <iostream>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <fstream>
#include <string>

using namespace std;

#define BUFFERSIZE 256

// 向文件写数据
void writeToFile(int fd)
{
    string buf = "hello world";
    int writeBytes = write(fd, buf.c_str(), buf.size());
    cout << "writeBytes:" << writeBytes << endl;
}

// 从文件读数据
void readFromFile(int fd)
{
    char buffer[BUFFERSIZE] = { 0 };
    int readBytes = read(fd, buffer, sizeof(buffer));
    cout << "readBytes:" << readBytes << " buffer:" << buffer << endl;
}

int main()
{
    const char *filename = "./test1.txt";
    int fd1 = open(filename, O_RDWR | O_CREAT, 0644);
    if (fd1 == -1)
    {
        perror("error");
    }
    cout << "fd1:" << fd1 << endl;

    // 写入数据
    writeToFile(fd1);

    // 读取数据
    // 文件指针在写入后没有被重置到文件开头，所以在读取时从写入的末尾开始读取
    // 而文件指针已经在文件的末尾了，因此无法读取到任何数据
    // 可以使用 lseek() 来重置文件指针
    // 在写入完成后，可以使用 lseek(fd1, 0, SEEK_SET) 将文件指针移动到文件的开头。
    readFromFile(fd1);

    // 关闭文件
    close(fd1);

    return 0;
}